標準ベイズ統計学 -9. 線形回帰-

ベイズ統計学勉強会 夏`22
安藤 正和

はじめに

自己紹介

  • 安藤正和(twitter)
  • 専修大学・大学院(心理学) → LINE株式会社(DS)
    • LINE Payのデータ分析

前回のあらすじ

巨大なデータを扱うときにはCSVではなくParquetを使うと便利です。

前回発表スライド

今日の話

  • dplyrバックエンドの速度比較をやってみた。
  • dtplyrの日本語の情報が少ないので共有したい。

対象かも

  • dplyr
  • dbplyrdtplyrを試す機会のなかった方

対象外かも

  • data.table

結論

Q. data.tableって速いの?

A. dtplyrですぐに試せるのでやってみましょう!
tidyverseパッケージインストール時にインストールされてます!)

dtplyr, arrow, duckdb

dplyrバックエンド達

dplyrで記述したデータ操作をdplyr外で実行するパッケージ。

  • tydyverse1
  • その他
    • sparklyr : SparkにSQLを送信して計算実行
    • arrow : Arrow C++ライブラリの計算エンジンAceroで計算実行

どれが速いか気になる!

  • dtplyr, arrow, dbplyr+duckdbは同じような目的(ローカル実行で集約計算などを速くしたい)で使用されます。
    • 前回の発表arrowと共にduckdbを紹介したところ、
      duckdbの使いどころが分からない」との感想をいただいた。
  • 有名なH2Oベンチマークは最後の実行が2021年7月、 まだarrowdplyr::summariseを実行できなかった頃の結果。

ベンチマーク

対象パッケージ

library(dplyr)
library(dtplyr)
library(arrow)
library(duckdb)

これらで、以下のようなグループ毎の集約計算を行います。

mtcars |>
  dplyr::group_by(cyl) |>
  dplyr::summarise(sum = sum(wt, na.rm = TRUE), .groups = "drop")
# A tibble: 3 × 2
    cyl   sum
  <dbl> <dbl>
1     4  25.1
2     6  21.8
3     8  56.0

環境

R version 4.2.1 (2022-06-23 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19044)

Matrix products: default

locale:
[1] LC_COLLATE=Japanese_Japan.utf8  LC_CTYPE=Japanese_Japan.utf8   
[3] LC_MONETARY=Japanese_Japan.utf8 LC_NUMERIC=C                   
[5] LC_TIME=Japanese_Japan.utf8    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] duckdb_0.4.0 DBI_1.1.3    arrow_9.0.0  dtplyr_1.2.1 dplyr_1.0.9 

loaded via a namespace (and not attached):
 [1] knitr_1.39        magrittr_2.0.3    bit_4.0.4         tidyselect_1.1.2 
 [5] R6_2.5.1          rlang_1.0.4       fastmap_1.1.0     fansi_1.0.3      
 [9] stringr_1.4.0     tools_4.2.1       data.table_1.14.2 xfun_0.32        
[13] utf8_1.2.2        cli_3.3.0         htmltools_0.5.3   bit64_4.0.5      
[17] assertthat_0.2.1  yaml_2.3.5        digest_0.6.29     tibble_3.1.8     
[21] lifecycle_1.0.1   purrr_0.3.4       codetools_0.2-18  vctrs_0.4.1      
[25] glue_1.6.2        evaluate_0.16     rmarkdown_2.14    stringi_1.7.8    
[29] compiler_4.2.1    pillar_1.8.0      generics_0.1.3    jsonlite_1.8.0   
[33] pkgconfig_2.0.3  

脚注

  1. dplyr backends: multidplyr 0.1.0, dtplyr 1.1.0, dbplyr 2.1.0